<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html lang="en">
<head>

<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2012. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >

   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link REL="STYLESHEET" HREF="../../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
   <title>Feature Manifest</title>
</head>
<body>

<h1>
Eclipse platform feature manifest</h1>
<p><i>Version 4.2 - Last revised May, 2012</i></p>

<p>The feature manifest format is defined by the following dtd:</p>
<p><tt>&lt;?xml encoding="ISO-8859-1"?&gt;</tt></p>
<p><tt>&lt;!ELEMENT feature (install-handler? | description? | copyright? |
license? | url? | includes* | requires? | plugin* | data*)&gt;</tt>
<br><tt>&lt;!ATTLIST feature</tt>
<br><tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; provider-name CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; ws&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; plugin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt>
<br><tt>&gt;</tt></p>
<p><tt>&lt;!ELEMENT description (#PCDATA)&gt;</tt>
<br><tt>&lt;!ATTLIST description</tt>
<br><tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&gt;</tt></p>
<p><tt>&lt;!ELEMENT copyright (#PCDATA)&gt;</tt>
<br><tt>&lt;!ATTLIST copyright</tt>
<br><tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&gt;</tt></p>
<p><tt>&lt;!ELEMENT license (#PCDATA)&gt;</tt>
<br><tt>&lt;!ATTLIST license</tt>
<br><tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&gt;</tt></p>
<p><tt>&lt;!ELEMENT url (update?, discovery*)&gt;</tt></p>
<p><tt>&lt;!ELEMENT update EMPTY&gt;</tt>
<br><tt>&lt;!ATTLIST update</tt>
<br><tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&gt;</tt></p>
<p><tt>&lt;!ELEMENT discovery EMPTY&gt;</tt>
<br><tt>&lt;!ATTLIST discovery<br></tt>
<br><tt>&nbsp;&nbsp;&nbsp; url&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&gt;</tt></p>
<p><tt>&lt;!ELEMENT includes EMPTY&gt;</tt>
<br><tt>&lt;!ATTLIST includes</tt>
<br><tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED<br>
&nbsp;&nbsp;&nbsp;
name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED<br>
&nbsp;&nbsp;&nbsp;
optional&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true | false)
&quot;false&quot;</tt>
<br><tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; ws&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt> <tt><br>
&gt;</tt></p>
<p><tt>&lt;!ELEMENT requires (import+)&gt;</tt></p>
<p><tt>&lt;!ELEMENT import EMPTY&gt;</tt>
<br><tt>&lt;!ATTLIST import</tt>
<br><tt>&nbsp;&nbsp;&nbsp; plugin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED<br>
&nbsp;&nbsp;&nbsp; feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; match&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
(perfect | equivalent | compatible | greaterOrEqual) "compatible"<br>
&nbsp;&nbsp;&nbsp; patch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true |
false) &quot;false&quot;</tt>
<br><tt>&gt;</tt></p>
<p><tt>&lt;!ELEMENT plugin EMPTY&gt;</tt>
<br><tt>&lt;!ATTLIST plugin</tt>
<br><tt>&nbsp;&nbsp;&nbsp; id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #REQUIRED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; fragment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true
| false) "false"</tt>
<br><tt>&nbsp;&nbsp;&nbsp; os&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; arch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; ws&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; nl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; download-size CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; install-size&nbsp; CDATA #IMPLIED</tt>
<br><tt>&nbsp;&nbsp;&nbsp; unpack&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (true |
false) &quot;true&quot;</tt>
<br><tt>&gt;</tt></p>
<p>The element and attribute definitions are as follows:</p>
<ul>

<li>&lt;feature&gt; - defines the feature
<ul>
<li>id - required feature identifier (eg. com.xyz.myfeature)</li>
<li>version - required component version (eg. 1.0.3)</li>
<li>label - optional displayable label (name). Intended to be translated.</li>
<li>provider-name - optional display label identifying the organization providing
this component. Intended to be translated.</li>
<li>os - optional operating system specification. A comma-separated list of
operating system designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this feature should only be installed on one of the specified
OS systems. If this attribute is not specified, the feature can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of feature regardless of this setting).</li>
<li>arch - optional machine architecture specification. A comma-separated list
of architecture designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this feature should only be installed on one of the specified
systems. If this attribute is not specified, the feature can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of feature regardless of this setting).</li>
<li>ws - optional windowing system specification. A comma-separated list of
window system designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this feature should only be installed on one of the specified
WS's. If this attribute is not specified, the feature can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of feature regardless of this setting).</li>
<li>nl - optional locale specification. A comma-separated list of locale designators
defined by Java. Indicates this feature should only be installed on a system
running with a compatible locale (using Java locale-matching rules). If
this attribute is not specified, the feature can be installed on all systems
(language-neutral implementation). This information is used as a hint by
the installation and update support (user can force installation of feature
regardless of this setting).</li>
<li> plugin - optional identifier that represents the id of the plug-in
listed in the feature that is used to carry branding information for
the feature (images, translations, splash screens in case of primary feature
etc.). If not specified, the assumption will be made the attribution plug-in
has the same id as the feature.</li>
</ul>
</li>

<li>&lt;description&gt; - brief component description as simple text. Intended
to be translated.
<ul>
<li>url - optional URL for the full description as HTML. The URL can be specified
as absolute of relative. If relative, it is assumed to be relative to (and
packaged in) the feature archive. Note, that for NL handling the URL value
should be separated to allow alternate URLs to be specified for each national
language.</li>
</ul>
</li>

<li>&lt;copyright&gt; - feature copyright as simple text. Intended to be translated.
<ul>
<li>url - optional URL for the full description as HTML. The URL can be specified
as absolute of relative. If relative, it is assumed to be relative to (and
packaged in) the feature archive. Note, that for NL handling the URL value
should be separated to allow alternate URLs to be specified for each national
language.</li>
</ul>
</li>

<li>&lt;license&gt; - feature "click-through" license as simple text. Intended
to be translated. It is displayed in a standard dialog with [Accept] [Reject]
actions during the download/ installation process. Note, that click-through
license must be specified for any feature that will be selected for installation
or update using the Eclipse update manager. When using nested features,
only the nesting parent (i.e. the feature selected for installation or update)
must have click-through license text defined. The license text is required
even if the optional <i>url</i> attribute is specified.
<ul>
<li>url - optional URL for the full description as HTML. The URL can be specified
as absolute of relative. If relative, it is assumed to be relative to (and
packaged in) the feature archive. Note, that for NL handling the URL value
should be separated to allow alternate URLs to be specified for each national
language. Note, that the "content" of this URL is <b>not</b> what is presented
as the click-through license during installation processing. The click-through
license is the actual value of the <i>&lt;license&gt;</i> element (eg. <tt>&lt;license&gt;click
through text&lt;/license&gt;</tt>)</li>
</ul>
</li>

<li>&lt;url&gt; - optional URL specifying site(s) contain feature updates, or new features
<ul>
<li>&lt;update&gt; - URL to go to for updates to this feature
<ul>
<li>url - actual URL</li>
<li>label - displayable label (name) for the referenced site</li>
</ul>
</li>
<li>&lt;discovery&gt; - URL to go to for new features. In general, a provider
can use this element to reference its own site(s), or site(s) of partners
that offer complementary features. Eclipse uses this element simply as
a way to distribute new site URLs to the clients.
<ul>
<li>url - actual URL</li>
<li>label - displayable label (name) for the referenced site</li>
</ul>
</li>
</ul>
</li>

<li>&lt;includes&gt; - optional reference to a nested feature that is considered
to be part of this feature. Nested features must be located on the same
update site as this feature
<ul>
<li>id - required nested feature identifier. If the feature is a patch (see the
&lt;requires&gt; section below), this must be the id of another patch.</li>
<li>version - required nested feature version</li>
<li>optional - it is possible to include a feature as optional when
this attribute is &quot;true&quot;. Users are allowed to not install optional
features, disable them if they are installed, and install them later. A missing
optional feature is not treated as an error.</li>
<li>name - if an optional feature is missing, Eclipse cannot render its
name properly. This attribute can be used as a 'place holder' to allow Eclipse
to render the name of the optional feature when it is not installed.</li>
<li>os - optional operating system specification. A comma-separated list of
operating system designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this entry should only be installed on one of the specified OS
systems. If this attribute is not specified, the entry can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of entry regardless of this setting).</li>
<li>arch - optional machine architecture specification. A comma-separated list
of architecture designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this feature should only be installed on one of the specified
systems. If this attribute is not specified, the feature can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of feature regardless of this setting).</li>
<li>ws - optional windowing system specification. A comma-separated list of
window system designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this entry should only be installed on one of the specified WS's.
If this attribute is not specified, the entry can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of entry regardless of this setting).</li>
<li>nl - optional locale specification. A comma-separated list of locale designators
defined by Java. Indicates this entry should only be installed on a system
running with a compatible locale (using Java locale-matching rules). If
this attribute is not specified, the entry can be installed on all systems
(language-neutral implementation). This information is used as a hint by
the installation and update support (user can force installation of entry
regardless of this setting).</li>
</ul>
</li>

<li>&lt;requires&gt; - optional feature dependency information. Is expressed in
terms of plug-in dependencies. If specified, is enforced by the installation
and update support at the time of installation
<ul>
<li>&lt;import&gt; - dependency entry. Specification and processing is a subset
of the &lt;import&gt; specification in plugin.xml
<ul>
<li>plugin - identifier of dependent plug-in, if plug-in is used to express dependency</li>
<li>feature - identifier of dependent feature, if feature is used to
express dependency. <b>Either plugin or feature attribute must be set, but not
both. </b>If &quot;patch&quot; is &quot;true&quot;, feature attribute must be
used.</li>
<li>version - optional plug-in version specification. If &quot;patch&quot; is
&quot;true&quot;, version must be set.</li>
<li>match - optional matching rule. Valid values and processing are as follows:
<ul>
<li>if version attribute is not specified, the match attribute (if specified) is ignored.</li>
<li><b><i>perfect</i></b> - dependent plug-in version must match exactly the
specified version. If &quot;patch&quot; is &quot;true&quot;, &quot;perfect&quot;
is assumed and other values cannot be set.</li>
<li><b><i>equivalent</i></b> - dependent plug-in version must be at least at
the version specified, or at a higher service level (major and minor version
levels must equal the specified version).</li>
<li><b><i>compatible</i></b> - dependent plug-in version must be at least at
the version specified, or at a higher service level or minor level (major
version level must equal the specified version).</li>
<li><b><i>greaterOrEqual</i></b> - dependent plug-in version must be at least
at the version specified, or at a higher service, minor or major level.</li>
</ul>
</li>
<li>patch - if &quot;true&quot;, this constraint declares the enclosing
feature to be a patch for the referenced feature. Certain rules must be followed
when this attribute is set:
<ul>
  <li>feature attribute must be used to identifier of feature being patched</li>
  <li>version attribute must be set</li>
  <li>match attribute should not be set and &quot;perfect&quot; value will be
    assumed.</li>
  <li>if other features are &lt;include&gt;'ed, they must also be patches.</li>
</ul>
A patch is a special feature that carries newer versions of plug-ins for
 the feature it is patching.  It does not replace the feature.  A patch can also
 carry other patches by inclusion.</li>
</ul>
</li>
</ul>
</li>

<li>&lt;plugin&gt; - identifies referenced plug-in
<ul>
<li>id - required plug-in identifier (from plugin.xml)</li>
<li>version - required plug-in version (from plugin.xml)</li>
<li>fragment - optional specification indicating if this entry is a plug-in fragment. Default is "false"</li>
<li>os - optional operating system specification. A comma-separated list of
operating system designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this entry should only be installed on one of the specified os
systems. If this attribute is not specified, the entry can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of entry regardless of this setting).</li>
<li>arch - optional machine architecture specification. A comma-separated list
of architecture designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this feature should only be installed on one of the specified
systems. If this attribute is not specified, the feature can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of feature regardless of this setting).</li>
<li>ws - optional windowing system specification. A comma-separated list of
window system designators defined by Eclipse (see Javadoc for <tt>
org.eclipse.core.runtime.Platform)</tt>.
Indicates this entry should only be installed on one of the specified WS's.
If this attribute is not specified, the entry can be installed
on all systems (portable implementation). This information is used as a
hint by the installation and update support (user can force installation
of entry regardless of this setting).</li>
<li>nl - optional locale specification. A comma-separated list of locale designators
defined by Java. Indicates this entry should only be installed on a system
running with a compatible locale (using Java locale-matching rules). If
this attribute is not specified, the entry can be installed on all systems
(language-neutral implementation). This information is used as a hint by
the installation and update support (user can force installation of entry
regardless of this setting).</li>
<li>download-size - optional hint supplied by the feature packager, indicating
the download size in KBytes of the referenced plug-in archive. If not specified,
the download size is not known (<b>Implementation Note:</b> the implementation
needs to distinguish between "not known" and 0 size)</li>
<li>install-size - optional hint supplied by the feature packager, indicating
the install size in KBytes of the referenced plug-in archive. If not specified,
the install size is not known (<b>Implementation Note:</b> the implementation
needs to distinguish between "not known" and 0 size)</li>
<li>unpack - optional specification supplied by the feature packager,
indicating that plugin is capable of running from a jar, and contents of plug-in
jar should not be unpacked into a directory.  Default is "true".
</li>
</ul>
</li>
</ul>
<p>Note, that in general the feature.xml&nbsp; manifest documents should specify
UTF-8 encoding. For example:</p>
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;</pre>
<p>Translatable text contained in the feature.xml can be separated into
feature&lt;_locale&gt;.properties files using Java property bundle conventions.
Note that the translated strings are used at installation time (i.e. do
not employ the plug-in fragment runtime mechanism).
</p>
</body>
</html>
